import org.kwis.msp.lcdui.Display;
import org.kwis.msp.lcdui.Jlet;
import org.kwis.msp.lwc.Component;
import org.kwis.msp.lwc.ContainerComponent;
import org.kwis.msp.lwc.LabelComponent;
import org.kwis.msp.lwc.ShellComponent;

/**
 * LayoutTest.java
 */
public class ContainerComponentEx1 extends Jlet {
	static class LayoutContainer extends ContainerComponent {
		/** 폭이 같도록 균등분할 시키는 레이아웃
		 */
		public void layout() {
			// 자식의 수를 센다
			int count = getNumberOfComponent();
			// 컨테이너의 폭을 count 만큼 등분하여 사용한다.
			int partWidth = getWidth() / count;
			// 자식 컴포넌트 들에게 위치와 크기를 지정한다.
			for(int i=0;i<count;i++) {
				// i 번째 자식 컴포넌트를 얻어온다.
				Component child = getComponent(i);
				// x,y,width,height를 지정한다.
				// 마지막 인자는 위치와 크기 모두 바꾼다는 의미이다.
				child.configure(i*partWidth,0,partWidth,getHeight(), POS_MASK | SIZE_MASK);
			}
		}
	}

	Display display;

	protected void startApp(String[] arg0) {
		display = Display.getDefaultDisplay();
		ShellComponent shell = new ShellComponent();
		// 새로 정의한 컨테이너를 사용한다.
		ContainerComponent container = new LayoutContainer();
		// 자식 컴포넌트 1
		Component comp1 = new LabelComponent("Component 1");
		// 자식 컴포넌트 2
		Component comp2 = new LabelComponent("Comppnent 2");
		// 두 컴포넌트가 붙어 있으면 눈에 안띄기 때문에 색을 지정한다.
		// 빨간색으로 지정했다.
		comp2.setBackground(0x00ff0000);
		// 컨테이너에 자식들 추가.
		container.addComponent( comp1 );
		container.addComponent( comp2 );
		// 워크 컴포넌트로 컨테이너 지정.
		// 간결함을 위해 타이틀과 커맨드는 안 넣었다.
		shell.setWorkComponent( container );
		// 카드를 등록한다.
		display.pushCard( shell.getCard() );
		//display.pushCard( comp2.getCard() ); //이렇게 해도 결과는 똑같다. getCard()는 최상위 컴포넌트의 card를 반환하기 때문
	}

	protected void destroyApp(boolean arg0) {
	}
}

